package com.benshou.bsoa.dto.renshi.res;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

/**
 * 员工数据查询响应类，封装从 Moka 平台查询 IM（钉钉/企业微信/飞书）用户ID的结果
 */
@Data
public class EmployeeDataResponse {

    /** 返回结果的状态码，例如 "200" 表示成功 */
    private String errorCode;

    /** 返回的状态信息，通常为错误描述或 success */
    private String errorMsg;

    /** 业务是否成功的标志位 */
    @JsonProperty("bizSuccess")
    private Boolean bizSuccess;

    /** 返回的核心数据对象 */
    @JsonProperty("result")
    private Result result;

    /**
     * 第一层 result 对象，包含 list 字段
     */
    @Data
    public static class Result {
        /** 用户ID信息列表（钉钉/企业微信/飞书） */
        @JsonProperty("list")
        private ListData list;
    }

    /**
     * 包含各系统用户ID信息的对象
     */
    @Data
    public static class ListData {

        /** 企业微信用户ID信息列表 */
        @JsonProperty("wecomUserId")
        private List<WecomUserId> wecomUserId;

        /** 钉钉用户ID信息列表 */
        @JsonProperty("dingdingUserId")
        private List<DingdingUserId> dingdingUserId;

        /** 飞书用户ID信息列表（可选） */
        @JsonProperty("larkUserId")
        private List<LarkUserId> larkUserId;
    }

    /**
     * 企业微信用户信息结构
     */
    @Data
    public static class WecomUserId {

        /** 企业微信明文 userId */
        @JsonProperty("userid")
        private String userid;

        /** 企业微信密文 userId */
        @JsonProperty("cipherUserId")
        private String cipherUserId;

        /** 企业微信 corpid */
        @JsonProperty("corpid")
        private String corpid;

        /** Moka 系统中员工的唯一标识 ID */
        @JsonProperty("uuid")
        private Long uuid;

        /** 企业微信部门 ID */
        @JsonProperty("deptId")
        private String deptId;

        /** 数据类型（1：钉钉，2：企业微信，3：飞书） */
        @JsonProperty("type")
        private int type;
    }

    /**
     * 钉钉用户信息结构
     */
    @Data
    public static class DingdingUserId {

        /** 钉钉明文 userId */
        @JsonProperty("userid")
        private String userid;

        /** 钉钉密文 userId */
        @JsonProperty("cipherUserId")
        private String cipherUserId;

        /** 钉钉 corpid */
        @JsonProperty("corpid")
        private String corpid;

        /** 钉钉部门 ID */
        @JsonProperty("deptId")
        private String deptId;

        /** 数据类型（1：钉钉，2：企业微信，3：飞书） */
        @JsonProperty("type")
        private int type;

        /** Moka 系统中员工的唯一标识 ID */
        @JsonProperty("uuid")
        private Long uuid;
    }

    /**
     * 飞书用户信息结构（如启用飞书时使用）
     */
    @Data
    public static class LarkUserId {

        /** 飞书用户 userId */
        @JsonProperty("userid")
        private String userid;
    }
}
